﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClientApplication
{
    public delegate void SetupRulesEventHandler(object sender, SetupRulesArgs e);
    public delegate void TimerEventHandler(object sender, EventArgs e);
    public delegate void AddContestantEventHandler(object sender, EventArgs e);
    public delegate void UpdateContestantListEventHandler(object sender, CopyContestantsEventArgs e);
    public delegate void ClearContestantListEventHandler(object sender, EventArgs e);
    public delegate void ClearRulesEventHandler(object sender, EventArgs e);
    public delegate void SendJudgesEventHandler(object sender, ChosenJudgeEventArgs e);
    public delegate void GetActiveContestantEventHandler(object sender, EventArgs e);
    public delegate void SendJumpCodeEventHandler(object sender, string jumpCode);
    public delegate void SendContestViewRequestHandler(object sender, Guid guid);
    public delegate void GeneralEventHandler(object sender, EventArgs e);
    public delegate void IntEventHandler(object sender, int intValue);

    interface IAdmin1
    {

        
        //void updateJudges(List<Judge> jList);
        void AddContestantFromAdmin3(Contestant toAdd);
        void SetActiveContestant(Contestant activeContestant);
        void JumpDone();
        void HandleLogMessage(string message);
        void HandleNewJumpFromServer(string ID, string name, string nationality, string jumpNumber);
        void UpdateJudges(List<JudgeSerializable> jList);
        void AddContestantFromAdmin2(ContestantList listAdd);
        void HandleContestantMessage(string message);
        void ShowRefreshedContestList(List<string> FinishedContests);
        void ShowContestResult(ContestPacket contestPacket);
        void UpdateActiveContestPacket(ContestPacket contestPacket);
        void JudgeTextBoxUpdateGreen(string username);
        void JudgeTextBoxUpdateRed(string username);
        void JudgeTextBoxUpdateWhite(string username);
        int GetGenderComboBoxValue();
        List<JudgeSerializable> GetAvailableJudges();
        ContestPacket GetTempContestPacket();
        void ResetCompetition();


        event GeneralEventHandler FinishedContestsRequest;
        event SendJumpCodeEventHandler SendJumpCode;
        event GetActiveContestantEventHandler GetActiveContestant;
        event AddContestantEventHandler AddContestant;
        event SetupRulesEventHandler SetupRules;
        event UpdateContestantListEventHandler UpdateContestant;
        event ClearRulesEventHandler ClearRules;
        event SendJudgesEventHandler SendJudges;
        event SendContestViewRequestHandler ViewContestRequest;
        event IntEventHandler ViewContestantDetails;
    }
}
